package com.leon.programPeral.ch4;

/**
 * 书中的一个二分搜索程序实现
 */
public class Ch4BinarySearchClient
{
	public static void main(String[] args)
	{
		int[] datas = new int[] { 1, 2, 3, 4, 5, 7, 8, 9, 10 };
		int key = 6;
		System.out.println(search(datas, 0, datas.length - 1, key));

	}

	/**
	 * 需要考虑 key 不在 datas 中的情况
	 * @param datas
	 * @param i
	 * @param j
	 * @return
	 */
	private static int search(int[] datas, int i, int j, int key)
	{
		int min = i;
		int max = j;
		while (min <= max)
		{
			int mid = (min + max) / 2;
			if (datas[mid] > key)
			{
				max = mid - 1;
			}
			else if (datas[mid] < key)
			{
				min = mid + 1;
			}
			else
			{
				return mid;
			}
		}
		return -1;
	}
}
